import sys
import os

# 添加项目根目录到Python路径
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..'))

from video_processors.concat_processor import enhanced_concat_processor


def main():
    """
    enhanced_concat_processor使用示例
    
    本示例展示了如何使用enhanced_concat_processor函数处理具有不同分辨率和帧率的视频文件。
    支持本地文件路径和网络URL，函数会自动下载网络视频进行处理。
    
    新增功能：
    1. 自动处理不同分辨率的视频，保持宽高比不变
    2. 自动处理不同帧率的视频
    3. 支持指定目标尺寸和帧率
    """
    # 真实的视频链接列表（具有不同分辨率和帧率的视频）
    real_video_urls = [
        "https://bbdev.oss-cn-zhangjiakou.aliyuncs.com/freefishpc/assets_library/6351/124/b2ff5f26-3699-4de3-adc7-730e6f7e5090.mp4",
        "https://bbdev.oss-cn-zhangjiakou.aliyuncs.com/freefishpc/assets_library/6351/124/162fb124-18df-4c25-a56b-b7670d09b9e2.mp4",
        "https://bbdev.oss-cn-zhangjiakou.aliyuncs.com/freefishpc/assets_library/6351/124/e10c5df4-ed3e-4be2-8c7d-17f5d8dd60fe.mp4",
        "https://bbdev.oss-cn-zhangjiakou.aliyuncs.com/freefishpc/assets_library/6351/124/86619e1f-a24b-4983-b70f-754201a49da3.mp4",
        "https://bbdev.oss-cn-zhangjiakou.aliyuncs.com/freefishpc/assets_library/6351/124/e7990842-58dd-4a3f-8ebb-0d007be3a470.mp4",
        "https://bbdev.oss-cn-zhangjiakou.aliyuncs.com/freefishpc/assets_library/6351/124/89021356-ca75-41d4-85ff-8e75a1351f9f.mp4",
        "https://bbdev.oss-cn-zhangjiakou.aliyuncs.com/freefishpc/assets_library/6351/124/45f7e5e6-4702-41c9-a919-3584148f2b15.mp4",
        "https://bbdev.oss-cn-zhangjiakou.aliyuncs.com/freefishpc/assets_library/6351/124/431e3f1d-e30e-4792-8d54-7e4363caa7a7.mp4",
        "https://bbdev.oss-cn-zhangjiakou.aliyuncs.com/freefishpc/assets_library/6351/124/225520c1-dcdf-4536-b5df-3b21e4e8b84c.mp4",
        "https://bbdev.oss-cn-zhangjiakou.aliyuncs.com/freefishpc/assets_library/6351/124/1ba0b693-fa3a-4b87-8507-3745463717c5.mp4",
        "https://bbdev.oss-cn-zhangjiakou.aliyuncs.com/freefishpc/assets_library/6351/124/1eb69825-492c-47b5-bf78-37613181c153.mp4"
    ]
    
    # 示例1: 使用默认设置处理视频（保持宽高比不变）
    print("=== 示例1: 使用默认设置处理视频（保持宽高比不变）===")
    try:
        # 使用前2个视频
        video_paths = real_video_urls[:11]
        print(f"将拼接以下视频:")
        for i, url in enumerate(video_paths, 1):
            print(f"  {i}. {url}")
        
        # 使用增强版处理器，保持宽高比不变
        print("\n开始拼接视频（保持宽高比不变）...")
        output_path, video_info = concat_processor(
            video_paths=video_paths,
            target_duration=None,  # 不截取，使用所有视频的总时长
            maintain_aspect_ratio=True  # 保持宽高比不变
        )
        
        print(f"处理完成!")
        print(f"输出路径: {output_path}")
        print(f"视频时长: {video_info['duration']} 秒")
        print(f"视频尺寸: {video_info['size']}")
        print(f"视频FPS: {video_info['fps']}")
        print(f"文件大小: {video_info['file_size']} 字节")
        
        # 注释掉清理输出文件的代码，保留输出文件
        # 清理输出文件
        # if os.path.exists(output_path):
        #     os.remove(output_path)
        #     print(f"已清理输出文件: {output_path}")
            
    except Exception as e:
        print(f"处理失败: {e}")
    
    print("\n" + "="*50 + "\n")
    return
    # 示例2: 指定目标尺寸和帧率
    print("=== 示例2: 指定目标尺寸和帧率 ===")
    try:
        # 使用前2个视频
        video_paths = real_video_urls[:2]
        print(f"将拼接以下视频:")
        for i, url in enumerate(video_paths, 1):
            print(f"  {i}. {url}")
        
        # 使用增强版处理器，指定目标尺寸和帧率
        print("\n开始拼接视频并指定目标尺寸和帧率...")
        output_path, video_info = enhanced_concat_processor(
            video_paths=video_paths,
            target_duration=10,  # 截取到10秒
            maintain_aspect_ratio=True,  # 保持宽高比不变
            target_size=(1920, 1080),  # 指定目标尺寸为1920x1080
            target_fps=30.0  # 指定目标帧率为30fps
        )
        
        print(f"处理完成!")
        print(f"输出路径: {output_path}")
        print(f"视频时长: {video_info['duration']} 秒")
        print(f"视频尺寸: {video_info['size']}")
        print(f"视频FPS: {video_info['fps']}")
        print(f"文件大小: {video_info['file_size']} 字节")
        
        # 注释掉清理输出文件的代码，保留输出文件
        # 清理输出文件
        # if os.path.exists(output_path):
        #     os.remove(output_path)
        #     print(f"已清理输出文件: {output_path}")
            
    except Exception as e:
        print(f"处理失败: {e}")
    
    print("\n" + "="*50 + "\n")
    
    # 示例3: 不保持宽高比（拉伸填充）
    print("=== 示例3: 不保持宽高比（拉伸填充）===")
    try:
        # 使用前2个视频
        video_paths = real_video_urls[:2]
        print(f"将拼接以下视频:")
        for i, url in enumerate(video_paths, 1):
            print(f"  {i}. {url}")
        
        # 使用增强版处理器，不保持宽高比
        print("\n开始拼接视频（不保持宽高比）...")
        output_path, video_info = enhanced_concat_processor(
            video_paths=video_paths,
            target_duration=8,  # 截取到8秒
            maintain_aspect_ratio=False,  # 不保持宽高比，直接拉伸
            target_size=(1280, 720),  # 指定目标尺寸为1280x720
            target_fps=24.0  # 指定目标帧率为24fps
        )
        
        print(f"处理完成!")
        print(f"输出路径: {output_path}")
        print(f"视频时长: {video_info['duration']} 秒")
        print(f"视频尺寸: {video_info['size']}")
        print(f"视频FPS: {video_info['fps']}")
        print(f"文件大小: {video_info['file_size']} 字节")
        
        # 注释掉清理输出文件的代码，保留输出文件
        # 清理输出文件
        # if os.path.exists(output_path):
        #     os.remove(output_path)
        #     print(f"已清理输出文件: {output_path}")
            
    except Exception as e:
        print(f"处理失败: {e}")


if __name__ == "__main__":
    main()